generic-camera 0.0.9

An efficient and ergonomic interface to capture images using cameras.
Documentation

generic-camera

generic-camera is a framework for implementing type-agnostic interfaces for cameras. generic-camera provides two fundamental traits, GenCamDriver and GenCam.

GenCamDriver

GenCamDriver defines functionality used to query a driver for available devices, their capabilities, and connect to a specific device.

GenCam

GenCam defines functionality to query a specific driver for its capabilities (get_properties), which return a map of camera settings, along with legal values, controlled using the get_property and set_property functions. start_exposure, image_ready and download_image functions allow non-blocking image capture, and capture blocks to return an image. generic-camera uses refimage::GenericImageRef to support arbitrary image encapsulation (u8, u16 and f32 data types) while being serdes compatible and supporting metadata.

GenCamCtrl

GenCamCtrl encapsulates control of different aspects of a camera (serdes compatible).

  • GenCamCtrl::Device encapsulates device control,
  • GenCamCtrl::Sensor encapsulates sensor controls, such as setting ROI, pixel bit depth, `
  • GenCamCtrl::Trigger encapsulates trigger selection and settings,
  • GenCamCtrl::Exposure encapsulates exposure control (such as exposure time, auto exposure)
  • GenCamCtrl::FrameTime encapsulates frame time controls (such as frame rate)
  • GenCamCtrl::Analog controls analog features such as gain, white balance etc.
  • GenCamCtrl::DigitalIo controls digital I/O.

Property

Property structs encapsulate allowed ranges and variants for the various controls. The API accepts concrete values through the PropertyValue struct. Both Property and PropertyValue are serdes compatible.

Optional Features

  • server: This optional feature exports GenCamServer, a type that aggregates multiple cameras, accessed by a i32 ID returned when the camera is inserted into GenCamServer. Functions associated with a camera are called by passing in the appropriate GenSrvCmd, and the returns values are encapsulated in GenSrvValue.
  • dummy: This optional feature exports a dummy camera through GenCamDriverDummy and GenCamDummy to demonstrate the use of the API.